#ifndef PATNODO_H_
#define PATNODO_H_

#include <iostream>
#include <string>

using namespace std;

class PatriciaNodo
{
	public:
		static const int LETRAS = 26;
	
		//contructores:
		//normal:
		PatriciaNodo();
		PatriciaNodo( const string& );
		PatriciaNodo( PatriciaNodo*, const string& );
		//por copia:
		PatriciaNodo( const PatriciaNodo& );
		//destructor:
		~PatriciaNodo();
	
		const string& getClave() const;
		bool setClave( const string& );

		PatriciaNodo* getPatriciaNodoLetra( const int ) const;
		void setPatriciaNodoLetra( PatriciaNodo*, const int );
		
		PatriciaNodo* getPatriciaNodoPadre() const;
		void setPatriciaNodoPadre( PatriciaNodo* );
		
		bool operator==( const PatriciaNodo& ) const;
		bool operator!=( const PatriciaNodo& ) const;
		PatriciaNodo& operator=( const PatriciaNodo& );
		
		bool vaciarHijos();
		bool tieneHijos() const;
		int cantidadHijos() const;
        
		friend ostream& operator<<( ostream&, const PatriciaNodo& );
        
	private:
		int _cantidadHijos;
		string clave;
		PatriciaNodo* padre;
		PatriciaNodo* siguientes[26];
		
		void _copiar( const PatriciaNodo& );
};

#endif /*PATNODO_H_*/
